package logica;

import java.sql.SQLException;

import persistencia.DAOException;
import persistencia.PersistenciaException;

import logica.clases.Asalariado;
import logica.clases.Facade;
import logica.clases.Freelance;
import logica.datatypes.DataAsalariado;
import logica.datatypes.DataEmpleado;
import logica.datatypes.DataEmpresa;
import logica.datatypes.DataFreelance;
import logica.datatypes.DataPagos;

public class pruebaFacade {

	public static void main(String[] args) throws DAOException, SQLException, PersistenciaException, ClassNotFoundException, InstantiationException, IllegalAccessException{
		Facade fac = null;
		fac = new Facade();
		
		/*
		//prueba DAO empresas
		DataEmpresa dataEmpresa = new DataEmpresa(3,"Empresa3"), dataEmpresaRES = null;
		fac.agregarEmpresa(dataEmpresa);
		dataEmpresaRES = fac.obtenerEmpresa(3);		
		System.out.println(dataEmpresaRES.getRazon_Social());
		
		//prueba DAO empleados
		DataEmpleado dataEmpleado = new DataAsalariado(1,"d","d",26,3,Float.valueOf("1000"));
		fac.agregarEmpleado(dataEmpleado);
		
		DataEmpleado dataEmpleado1 = new DataAsalariado(2,"aa","aa",26,3,Float.valueOf("1000"));
		fac.agregarEmpleado(dataEmpleado1);
		
		DataEmpleado dataEmpleado2 = new DataFreelance(3,"bb","bb",26,3,10,Float.valueOf("300"));
		fac.agregarEmpleado(dataEmpleado2);
		
		DataEmpleado dataEmpleado3 = new DataFreelance(4,"cc","cc",26,3,10,Float.valueOf("100"));
		fac.agregarEmpleado(dataEmpleado3);
		
		*/
		
		
		//prueba Listados
		
		int i, cant;

		DataEmpresa[] empresas = fac.listadoEmpresas();
		cant = empresas.length;
		for (i=0;i<cant;i++){										
			System.out.println(empresas[i].getRut() + "   " + empresas[i].getRazon_Social());
		}

		
		
		DataEmpleado[] empleados1 = fac.listadoEmpleadosEmpresa(1);
		cant = empleados1.length;

		for (i=0;i<cant;i++){		
			if (empleados1[i] instanceof DataFreelance){			
				System.out.println(empleados1[i].getCi() + "   " +  empleados1[i].getNombre() + "   " + empleados1[i].getApellido() + "   " + empleados1[i].getEdad() + "   " + empleados1[i].getRutEmpresa() + "   " + ((DataFreelance)empleados1[i]).getCantidad_horas() + "   " + ((DataFreelance)empleados1[i]).getPrecio());
			}else{
				System.out.println(empleados1[i].getCi() + "   " +  empleados1[i].getNombre() + "   " + empleados1[i].getApellido() + "   " + empleados1[i].getEdad() + "   " + empleados1[i].getRutEmpresa() + "   " + ((DataAsalariado)empleados1[i]).getSalario());
			}
		}
		DataEmpleado[] empleados2 = fac.listadoEmpleadosEmpresa(2);
		cant = empleados2.length;
		for (i=0;i<cant;i++){		
			if (empleados2[i] instanceof DataFreelance){			
				System.out.println(empleados2[i].getCi() + "   " +  empleados2[i].getNombre() + "   " + empleados2[i].getApellido() + "   " + empleados2[i].getEdad() + "   " + empleados2[i].getRutEmpresa() + "   " + ((DataFreelance)empleados2[i]).getCantidad_horas() + "   " + ((DataFreelance)empleados2[i]).getPrecio());
			}else{
				System.out.println(empleados2[i].getCi() + "   " +  empleados2[i].getNombre() + "   " + empleados2[i].getApellido() + "   " + empleados2[i].getEdad() + "   " + empleados2[i].getRutEmpresa() + "   " + ((DataAsalariado)empleados2[i]).getSalario());
			}
		}
		DataEmpleado[] empleados3 = fac.listadoEmpleadosEmpresa(3);
		cant = empleados3.length;
		for (i=0;i<cant;i++){		
			if (empleados3[i] instanceof DataFreelance){			
				System.out.println(empleados3[i].getCi() + "   " +  empleados3[i].getNombre() + "   " + empleados3[i].getApellido() + "   " + empleados3[i].getEdad() + "   " + empleados3[i].getRutEmpresa() + "   " + ((DataFreelance)empleados3[i]).getCantidad_horas() + "   " + ((DataFreelance)empleados3[i]).getPrecio());
			}else{
				System.out.println(empleados3[i].getCi() + "   " +  empleados3[i].getNombre() + "   " + empleados3[i].getApellido() + "   " + empleados3[i].getEdad() + "   " + empleados3[i].getRutEmpresa() + "   " + ((DataAsalariado)empleados3[i]).getSalario());
			}
		}
		

		
		DataPagos[] pagos = fac.listadoPagos();
		cant = pagos.length;
		
		for (i=0;i<cant;i++){										
			System.out.println(pagos[i].getRut() + "   " + pagos[i].getRazon_Social() + "   " + pagos[i].getPago());
		}
		

		//Prueba modificar empresa
		DataEmpresa dataEmpresaAntes = fac.obtenerEmpresa(3);
		System.out.println("Antes de la mod:   " + dataEmpresaAntes.getRut() + "   " + dataEmpresaAntes.getRazon_Social());

		DataEmpresa dataEmpresaMod = new DataEmpresa(3,"ArnaldoCCastro");	//cambiar para que se vea
		fac.modificarEmpresa(dataEmpresaMod);
		
		DataEmpresa dataEmpresaDespues = fac.obtenerEmpresa(3);
		System.out.println("Despues de la mod:   " + dataEmpresaDespues.getRut() + "   " + dataEmpresaDespues.getRazon_Social());

		
	}
}
